package from

import (
	"database/sql"
	"EasyData/global"
	"EasyData/sqls"
	log "code.google.com/p/log4go"
	"fmt"
	"errors"
)
/**
	获取数据
 */
func FetchData(task *global.Task,db *sql.DB) ([]map[string]interface{}){

	sqlStr :=sqls.SqlFormat(task)
	rows, err := db.Query(sqlStr,sqls.ParametersConvert(task)...)
	if err != nil {
		errStr := fmt.Sprintf("taskName[%s] taskCommand [%s] sql [%s] err [%s]",
			task.TaskName,task.TaskCommond,sqlStr,err)
		log.Error(errStr)
		return make([]map[string]interface{},0)
	}

	defer rows.Close()

	results := sqls.GetDataList(rows)
	//在return数据之前预检验Key的配置是不是正确的
	if len(results)>0 && nil ==results[0][task.Key]{
		errStr := fmt.Sprintf(" sql [%s] key is wrong,your key:[%s]",
			sqlStr,task.Key)
		log.Error(errStr)
		global.PanicError(errors.New(errStr),task)
	}
	return results
}
